1. Field of the Present Invention
The present invention generally relates to computer networks and more particularly to a system and method for initiating computers in a network following a power disruption or failure.
2. History of Related Art
Local area networks provide a desirable computing solution for an increasing number of applications. Manufacturers and designers of network computers have made significant efforts to address this growing market by providing machines designed to maximize network value by carefully controlling the implementation of resources on each computer in the network. In the past, local area networks were frequently designed by interconnecting two or more personal computers, possibly in combination with a large capacity, centralized server machine. The wide spread availability and acceptance of disk based operating system software that eliminated much of the design overhead associated with implementing a local area network greatly contributed to the proliferation of networks comprised of a two or more essentially stand-alone machines. Unfortunately, such networks frequently fail to utilize resources in an optimal fashion and, therefore, do not provide the most cost effective solution to the customer. More specifically, networks comprised simply of a collection of stand alone machines unnecessarily duplicate resources that can be offered via the network and centralized in one or more network servers.
In many applications, for example, significant cost savings can be achieved in a network by eliminating conventional permanent storage devices such as hard disks from some or all of the client machines. Permanent storage in these networks is provided via a centralized server that is shared among each of the network clients. In a wide range of applications, the cost, power consumption, and space savings achieved by eliminating local hard drives from the network can more than compensate for limitations imposed by the lack of local permanent storage. This is particularly true in applications that contemplate relatively rare interruptions in the power supplied to client machines. When power is continuously maintained to a network client, any software, such as operating system software, required to configure and provide basic functionality to the client can be maintained in the client""s system memory (i.e., the client""s RAM). In this manner, the occasions on which the client is required to retrieve information from the network""s permanent storage are greatly reduced and the increased access time associated with retrieving data from a remote server is generally acceptable.
Even in systems in which it is intended to maintain power continuously to each client, however, occasional power interruptions are inevitable. The disruption of power, whether intentional or otherwise, in a computer network that includes multiple diskless client machines can create a problem following the restoration of power as each client machine attempts to restore itself to a functional state. Following an interruption in power, each diskless client must retrieve basic operating system code from the network server before the client can execute application programs. In a conventional network design, each client attempts to retrieve or download the operating system immediately after power is restored. When multiple clients attempt to simultaneously download large quantities of data from the server, the limited bandwidth of the network can quickly become saturated. This saturation can result in an unacceptably slow start up sequence or, worse yet, a system unable to fully restore itself following a power interruption. Accordingly, it is highly desirable to provide a computer network that is able to avoid this xe2x80x9cboot stormxe2x80x9d phenomenon without significantly requiring an increase in network bandwidth or cost.
The problems identified above are in large part addressed by a network computer and network client designed to preserve and interpret power status information such that, following a system interruption, the network avoids a condition in which all network clients attempt simultaneously to access and download data from the system server. Broadly speaking, the present invention contemplates a computer network that includes a network server and a network client. The network server includes a storage medium configured with boot code data comprising, in one embodiment, operating system software for the network client. The network client includes a power status indicator and is configured to query the power status indicator as part of a boot code sequence that is initiated in response to a boot event. The network client is further configured to schedule retrieval of boot code data from the network server based upon the power status indicator.
Preferably, the power status indicator includes a power fail circuit that indicates whether power to the network client has failed since a previous boot event. In one embodiment, the power fail circuit includes a flip flop arranged such that the output of the flip flop is preset when power is restored to the network client after a power failure. Preferably the clear (CL) input of the flip flop is programmably assertable. The power status indicator preferably further includes a power mode indicator that conveys information about the last known power mode of the network client. Preferably, the power mode indicator includes at least one nonvolatile memory bit. In the preferred embodiment, the boot code sequence is stored in a nonvolatile storage device of the network client. In one embodiment suitable for minimizing the cost of the computer network, the network client lacks a randomly accessible permanent storage facility.
The present invention still further contemplates a client computer for use in a computer network. The computer includes a power status indicator and a nonvolatile storage device that is configured with instructions comprising a boot code sequence. The client computer is designed to execute the boot code sequence in response to a boot event. The boot code sequence queries the power status indicator and schedules the retrieval of boot code data from a server of the computer network based upon the power status indicator. In the preferred embodiment, the power status indicator includes, a power fail circuit, preferably comprising a flip flop, configured to indicate whether power to the client computer has failed since a previous boot event and a power mode indicator, preferably including one or more nonvolatile memory bits, indicative of a last known power mode of the client computer.
The present invention still further contemplates a method of operating a network client, including executing a boot code sequence in response to a boot event and querying a power status indicator as a portion of the boot code sequence. Thereafter, a retrieval of boot code data from a network server is scheduled based upon the power status indicator. Boot code data is then retrieved from the network server at the scheduled time and stored in a system memory of the network server. The boot event may suitably comprise a LAN wakeup event, a reset event, or a power on event. The querying of the power status indicator, in one embodiment, includes querying a power fail circuit configured to indicate if the network client has experienced a power fail since a previous boot event and clearing the power fail circuit afterwards. In the preferred embodiment, the querying of the power status indicator comprises querying a power mode indicator configured to indicate a last known power mode of the network client. The scheduling of the retrieval may include requesting a prompt from a user of the network client or creating a randomly generated delay interval.